package com.zsr.rabbitmq.eight;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.zsr.rabbitmq.utils.RabbitMqUtils;

/**
 * 死信队列 生产者
 *
 * @author zsr
 * @date 2021/8/9 20:27
 * 演示步骤：先将Consumer01启动，将交换机队列创建好，再关闭。
 * 启动Product，发送消息，由于消费者没启动，消息会进入死信队列
 */
public class Product {
    public static final String NORMAL_EXCHANGE = "normal_exchange";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMqUtils.getChannel();

        /**
         * 1.测试死信队列产生条件1：超过TTL时间
         * 需要在生产者设置TTL时间 ms，消费者正常队列添加一些属性
         */
       /* AMQP.BasicProperties properties=
                new AMQP.BasicProperties().builder().expiration("10000").build();
*/
        /**
         * 2.测试死信队列产生条件2：队列达到最大长度
         * 需要在生产者去掉properties，在消费者添加队列最大长度属性
         * 测试过程：删掉原先的队列，运行消费者创建队列，再关掉消费者（便于消息的积压），再使用生产者发送超过最大上限的消息
         * */
        for (int i = 0; i < 10; i++) {
            String message = "info" + i;
            channel.basicPublish(NORMAL_EXCHANGE, "zhangsan", null, message.getBytes());

        }
    }
}
